
let MagicStoneBreak=0;

task PlayerMove
{

function PlayerGraundJudg(Num)
{
	alternative(PlayerDirection)
	case(0)
	{
		if(Graund[PlayerPositionNum+Num]==4)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==5)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==6)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==7)
		{
			return(false);
		}
	}
	case(90)
	{
		if(Graund[PlayerPositionNum+Num]==4)
		{
			return(false);
		}
		if(Graund[PlayerPositionNum+Num]==5)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==6)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==7)
		{
			return(true);
		}
	}
	case(180)
	{
		if(Graund[PlayerPositionNum+Num]==4)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==5)
		{
			return(false);
		}
		if(Graund[PlayerPositionNum+Num]==6)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==7)
		{
			return(true);
		}
	}
	case(270)
	{
		if(Graund[PlayerPositionNum+Num]==4)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==5)
		{
			return(true);
		}
		if(Graund[PlayerPositionNum+Num]==6)
		{
			return(false);
		}
		if(Graund[PlayerPositionNum+Num]==7)
		{
			return(true);
		}
	}

	if(Graund[PlayerPositionNum+Num]==1)
	{
		return(false);
	}
	if(Graund[PlayerPositionNum+Num]==2)
	{
		return(false);
	}
	if(Graund[PlayerPositionNum+Num]==3)
	{
		return(false);
	}

	if(Object[PlayerPositionNum+Num]==3)
	{
		return(false);
	}

	if(Graund[PlayerPositionNum+Num]==0)
	{
		return(true);
	}

	if(Graund[PlayerPositionNum+Num]==8)
	{
		return(true);
	}

	if(Graund[PlayerPositionNum+Num]==9)
	{
		return(true);
	}
}

function MagicStoneGraundJudg(Num)
{
	if(Object[PlayerPositionNum+Num]==3)
	{
		MagicStoneBreak=1;
	}
	if(Graund[PlayerPositionNum+Num]==0 || Graund[PlayerPositionNum+Num]==1 || Graund[PlayerPositionNum+Num]==3 || Graund[PlayerPositionNum+Num]==4 || Graund[PlayerPositionNum+Num]==5 || Graund[PlayerPositionNum+Num]==6 || Graund[PlayerPositionNum+Num]==7 || Graund[PlayerPositionNum+Num]==8 || Graund[PlayerPositionNum+Num]==9)
	{
		return(true);
	}
	else
	{
		return(false);
	}
}

function MagicBallGraundJudg(Num)
{
	if(Graund[PlayerPositionNum+Num]==0 || Graund[PlayerPositionNum+Num]==1 || Graund[PlayerPositionNum+Num]==3 || Graund[PlayerPositionNum+Num]==4 || Graund[PlayerPositionNum+Num]==5 || Graund[PlayerPositionNum+Num]==6 || Graund[PlayerPositionNum+Num]==7 || Graund[PlayerPositionNum+Num]==8 || Graund[PlayerPositionNum+Num]==9)
	{
		return(true);
	}
	else
	{
		return(false);
	}
}

function CreateMagicBallGraundJudg(Num)
{
	if(Graund[PlayerPositionNum+Num]==0 || Graund[PlayerPositionNum+Num]==1 || Graund[PlayerPositionNum+Num]==3 || Graund[PlayerPositionNum+Num]==4 || Graund[PlayerPositionNum+Num]==5 || Graund[PlayerPositionNum+Num]==6 || Graund[PlayerPositionNum+Num]==7 || Graund[PlayerPositionNum+Num]==8 || Graund[PlayerPositionNum+Num]==9)
	{
		return(true);
	}
	else
	{
		return(false);
	}
}

function GraundChange(Num)
{
	if(Graund[PlayerPositionNum-Num]==8)
	{
		Graund[PlayerPositionNum-Num]=1;
	}
	if(Graund[PlayerPositionNum-Num]==9)
	{
		Graund[PlayerPositionNum-Num]=3;
	}
}

loop
{
	if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD)
	{
		PlayerDirection=0;
		if(round(PlayerPosition[0])<12)
		{
		if(PlayerPositionNum+1==MagicStonePositionNum)
		{
			if(PlayerGraundJudg(+1))
			{
			if(MagicStoneGraundJudg(+2))
			{
			if(Object[PlayerPositionNum+2]==0)
			{
				MagicStoneMoveRight(15);
				PlayerMoveRight(15);
				wait(15);
				GraundChange(+1);
			}
			}
			}
		}
		else if(Object[PlayerPositionNum+1]!=0)
		{
			if(PlayerGraundJudg(+1))
			{
			if(MagicBallGraundJudg(+2))
			{
			if(PlayerPositionNum+2!=MagicStonePositionNum)
			{
			if(Object[PlayerPositionNum+2]==0)
			{
				ObjectMove=ObjectMove~[15,PlayerPositionNum+1,0];
				PlayerMoveRight(15);
				wait(15);
				GraundChange(+1);
			}
			}
			}
			}
		}
		else if(PlayerGraundJudg(+1))
		{
			PlayerMoveRight(15);
			wait(15);
			GraundChange(+1);
		}
		}
	}
	if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD)
	{
		PlayerDirection=180;
		if(round(PlayerPosition[0])>1)
		{
		if(PlayerPositionNum-1==MagicStonePositionNum)
		{
			if(PlayerGraundJudg(-1))
			{
			if(MagicStoneGraundJudg(-2))
			{
			if(Object[PlayerPositionNum-2]==0)
			{
				MagicStoneMoveLeft(15);
				PlayerMoveLeft(15);
				wait(15);
				GraundChange(-1);
			}
			}
			}
		}
		else if(Object[PlayerPositionNum-1]!=0)
		{
			if(PlayerGraundJudg(-1))
			{
			if(MagicBallGraundJudg(-2))
			{
			if(PlayerPositionNum-2!=MagicStonePositionNum)
			{
			if(Object[PlayerPositionNum-2]==0)
			{
				ObjectMove=ObjectMove~[15,PlayerPositionNum-1,180];
				PlayerMoveLeft(15);
				wait(15);
				GraundChange(-1);
			}
			}
			}
			}
		}
		else if(PlayerGraundJudg(-1))
		{
			PlayerMoveLeft(15);
			wait(15);
			GraundChange(-1);
		}
		}
	}
	if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
	{
		PlayerDirection=270;
		if(round(PlayerPosition[1])>1)
		{
		if(PlayerPositionNum-13==MagicStonePositionNum)
		{
			if(PlayerGraundJudg(-13))
			{
			if(MagicStoneGraundJudg(-26))
			{
			if(Object[PlayerPositionNum-26]==0)
			{
				MagicStoneMoveUp(15);
				PlayerMoveUp(15);
				wait(15);
				GraundChange(-13);
			}
			}
			}
		}
		else if(Object[PlayerPositionNum-13]!=0)
		{
			if(PlayerGraundJudg(-13))
			{
			if(MagicBallGraundJudg(-26))
			{
			if(PlayerPositionNum-26!=MagicStonePositionNum)
			{
			if(Object[PlayerPositionNum-26]==0)
			{
				ObjectMove=ObjectMove~[15,PlayerPositionNum-13,270];
				PlayerMoveUp(15);
				wait(15);
				GraundChange(-13);
			}
			}
			}
			}
		}
		else if(PlayerGraundJudg(-13))
		{
			PlayerMoveUp(15);
			wait(15);
			GraundChange(-13);
		}
		}
	}
	if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
	{
		PlayerDirection=90;
		if(round(PlayerPosition[1])<13)
		{
		if(PlayerPositionNum+13==MagicStonePositionNum)
		{
			if(PlayerGraundJudg(+13))
			{
			if(MagicStoneGraundJudg(+26))
			{
			if(Object[PlayerPositionNum+26]==0)
			{
				MagicStoneMoveDown(15);
				PlayerMoveDown(15);
				wait(15);
				GraundChange(+13);
			}
			}
			}
		}
		else if(Object[PlayerPositionNum+13]!=0)
		{
			if(PlayerGraundJudg(+13))
			{
			if(MagicBallGraundJudg(+26))
			{
			if(PlayerPositionNum+26!=MagicStonePositionNum)
			{
			if(Object[PlayerPositionNum+26]==0)
			{
				ObjectMove=ObjectMove~[15,PlayerPositionNum+13,90];
				PlayerMoveDown(15);
				wait(15);
				GraundChange(+13);
			}
			}
			}
			}
		}
		else if(PlayerGraundJudg(+13))
		{
			PlayerMoveDown(15);
			wait(15);
			GraundChange(+13);
		}
		}
	}

	if(GetKeyState(VK_SHOT)==KEY_PUSH)
	{
		alternative(PlayerDirection)
		case(0)
		{
		if(PlayerPositionNum+1==MagicStonePositionNum)
		{
			if(MagicStoneGraundJudg(+2))
			{
			if(Object[PlayerPositionNum+2]==0)
			{
				MagicStoneMoveRight(15);
			}
			}
		}
		else if(Object[PlayerPositionNum+1]==1)
		{
			if(MagicBallGraundJudg(+2))
			{
			if(PlayerPositionNum+2!=MagicStonePositionNum)
			{
			if(Object[PlayerPositionNum+2]==0)
			{
				ObjectMove=ObjectMove~[15,PlayerPositionNum+1,0];
			}
			}
			}
		}
		}
		case(180)
		{
		if(PlayerPositionNum-1==MagicStonePositionNum)
		{
			if(MagicStoneGraundJudg(-2))
			{
			if(Object[PlayerPositionNum-2]==0)
			{
				MagicStoneMoveLeft(15);
			}
			}
		}
		else if(Object[PlayerPositionNum-1]==1)
		{
			if(MagicBallGraundJudg(-2))
			{
			if(PlayerPositionNum-2!=MagicStonePositionNum)
			{
			if(Object[PlayerPositionNum-2]==0)
			{
				ObjectMove=ObjectMove~[15,PlayerPositionNum-1,180];
			}
			}
			}
		}
		}

		case(90)
		{
		if(PlayerPositionNum+13==MagicStonePositionNum)
		{
			if(MagicStoneGraundJudg(+26))
			{
			if(Object[PlayerPositionNum+26]==0)
			{
				MagicStoneMoveDown(15);
			}
			}
		}
		else if(Object[PlayerPositionNum+13]==1)
		{
			if(MagicBallGraundJudg(+26))
			{
			if(PlayerPositionNum+26!=MagicStonePositionNum)
			{
			if(Object[PlayerPositionNum+26]==0)
			{
				ObjectMove=ObjectMove~[15,PlayerPositionNum+13,90];
			}
			}
			}
		}
		}

		case(270)
		{
		if(PlayerPositionNum-13==MagicStonePositionNum)
		{
			if(MagicStoneGraundJudg(-26))
			{
			if(Object[PlayerPositionNum-26]==0)
			{
				MagicStoneMoveUp(15);
			}
			}
		}
		else if(Object[PlayerPositionNum-13]==1)
		{
			if(MagicBallGraundJudg(-26))
			{
			if(PlayerPositionNum-26!=MagicStonePositionNum)
			{
			if(Object[PlayerPositionNum-26]==0)
			{
				ObjectMove=ObjectMove~[15,PlayerPositionNum-13,270];
			}
			}
			}
		}
		}
		wait(15);
	}

	if(GetKeyState(VK_BOMB)==KEY_PUSH)
	{
		alternative(PlayerDirection)
		case(0)
		{
			if(PlayerPositionNum+1!=MagicStonePositionNum)
			{
			if(CreateMagicBallGraundJudg(+1))
			{
				if(Object[PlayerPositionNum+1]==0)
				{
					CreateMagicBall(PlayerPositionNum+1);
				}
				else if(Object[PlayerPositionNum+1]==1)
				{
					ReinforceMagicBall=ReinforceMagicBall~[PlayerPositionNum+1];
				}
			}
			}
		}
		case(90)
		{
			if(PlayerPositionNum+13!=MagicStonePositionNum)
			{
			if(CreateMagicBallGraundJudg(+13))
			{
				if(Object[PlayerPositionNum+13]==0)
				{
					CreateMagicBall(PlayerPositionNum+13);
				}
				else if(Object[PlayerPositionNum+13]==1)
				{
					ReinforceMagicBall=ReinforceMagicBall~[PlayerPositionNum+13];
				}
			}
			}
		}
		case(180)
		{
			if(PlayerPositionNum-1!=MagicStonePositionNum)
			{
			if(CreateMagicBallGraundJudg(-1))
			{
				if(Object[PlayerPositionNum-1]==0)
				{
					CreateMagicBall(PlayerPositionNum-1);
				}
				else if(Object[PlayerPositionNum-1]==1)
				{
					ReinforceMagicBall=ReinforceMagicBall~[PlayerPositionNum-1];
				}
			}
			}
		}
		case(270)
		{
			if(PlayerPositionNum-13!=MagicStonePositionNum)
			{
			if(CreateMagicBallGraundJudg(-13))
			{
				if(Object[PlayerPositionNum-13]==0)
				{
					CreateMagicBall(PlayerPositionNum-13);
				}
				else if(Object[PlayerPositionNum-13]==1)
				{
					ReinforceMagicBall=ReinforceMagicBall~[PlayerPositionNum-13];
				}
			}
			}
		}

		wait(5);
	}
	yield;
}
}

task CreateMagicBall(num)
{
		Object[num]=1;
		let SX=GetCenterX-180;
		let SY=GetCenterY-195;
		let scx=1;
		let scy=1;
		let NumX=num%13;
		let NumY=floor(num/13);
		let ExplodeCount=180;
		if(Graund[num]==3)
		{
			ExplodeCount=1;
		}
			else
		{
			ExplodeCount=179;
		}
		let MoveState=0;
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj, imgShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -15, -15);
		ObjEffect_SetVertexXY(obj, 1,15,  -15);
		ObjEffect_SetVertexXY(obj, 2,15, 15);
		ObjEffect_SetVertexXY(obj, 3,  -15,  15);

		ObjEffect_SetVertexUV(obj, 0,  224,  338);
		ObjEffect_SetVertexUV(obj, 1,  256, 338);
		ObjEffect_SetVertexUV(obj, 2,256, 370);
		ObjEffect_SetVertexUV(obj, 3, 224, 370);

		ObjEffect_SetVertexColor(obj,0,255,100,100,255);
		ObjEffect_SetVertexColor(obj,1,255,100,100,255);
		ObjEffect_SetVertexColor(obj,2,255,100,100,255);
		ObjEffect_SetVertexColor(obj,3,255,100,100,255);

		ObjEffect_SetLayer(obj,2);
		Obj_SetPosition(obj,96,163);
		let angle=0;
		ObjEffect_SetScale(obj, scx,scy);
		move;
		Explode;
		Explodemove;
		while(!Obj_BeDeleted(obj))
		{
			Obj_SetPosition(obj,SX+NumX*30,SY+NumY*30);
			ObjEffect_SetAngle(obj,0,0,angle);
			angle+=6;
			if(Graund[num]==3)
			{
			ExplodeCount+=1;
			}
			else
			{
			ExplodeCount-=1;
			}
			if(Graund[num]!=3 && ExplodeCount<=60)
			{
				angle+=6;
				ObjEffect_SetScale(obj, scx/2,scy/2);
			}
			else if(ExplodeCount<=180)
			{
				ObjEffect_SetScale(obj, scx/2,scy/2);
			}
			else if(ExplodeCount<=360)
			{
				ObjEffect_SetScale(obj, scx*3/4,scy*3/4);
			}
			else if(ExplodeCount<=540)
			{
				ObjEffect_SetScale(obj, scx,scy);
			}
			if(Graund[num]==3 && ExplodeCount>=480)
			{
				angle+=6;
				ObjEffect_SetScale(obj, scx,scy);
			}
			yield;
		}
		ascent(i in 0..4)
		{
		ExplodeEffect(SX+NumX*30,SY+NumY*30,90*i);
		}


		task ExplodeEffect(x,y,angle)
		{
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj, imgShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -10, -10);
		ObjEffect_SetVertexXY(obj, 1,10,  -10);
		ObjEffect_SetVertexXY(obj, 2,10, 10);
		ObjEffect_SetVertexXY(obj, 3,  -10,  10);

		ObjEffect_SetVertexUV(obj, 0,  80+20,  318);
		ObjEffect_SetVertexUV(obj, 1,  99+20, 318);
		ObjEffect_SetVertexUV(obj, 2,99+20, 338);
		ObjEffect_SetVertexUV(obj, 3, 80+20, 338);

		ascent(i in 0..4)
		{
	//	ObjEffect_SetVertexColor(obj,i,255,100,100,255);
		}

		ObjEffect_SetLayer(obj,3);
		Obj_SetPosition(obj,x,y);
		ObjEffect_SetScale(obj, scx,scy);
		Obj_SetAngle(obj,angle);
		Obj_SetSpeed(obj,5);
		wait(5);
		Obj_Delete(obj);
		}
task move
{

function MagicStoneGraundJudg(Num)
{
	if(Object[num+Num]==3)
	{
		MagicStoneBreak=1;
	}
	if(Graund[num+Num]==0 || Graund[num+Num]==1 || Graund[num+Num]==3 || Graund[num+Num]==4 || Graund[num+Num]==5 || Graund[num+Num]==6 || Graund[num+Num]==7 || Graund[num+Num]==8 || Graund[num+Num]==9)
	{
		return(true);
	}
	else
	{
		return(false);
	}
}

function MagicBallGraundJudg(Num)
{
	if(Graund[num+Num]==0 || Graund[num+Num]==1 || Graund[num+Num]==3 || Graund[num+Num]==4 || Graund[num+Num]==5 || Graund[num+Num]==6 || Graund[num+Num]==7 || Graund[num+Num]==8 || Graund[num+Num]==9)
	{
		return(true);
	}
	else
	{
		return(false);
	}
}

while(!Obj_BeDeleted(obj))
{
	Object[num]=1;
	if(length(ObjectMove)>0)
	{
		if(num==ObjectMove[1])
		{
			alternative(ObjectMove[2])
			case(0)
			{
				Object[num]=0;
				num+=1;
				Object[num]=1;
				loop(ObjectMove[0])
				{
					NumX+=1/ObjectMove[0];
					yield;
				}
			}
			case(90)
			{
				Object[num]=0;
				num+=13;
				Object[num]=1;
				loop(ObjectMove[0])
				{
					NumY+=1/ObjectMove[0];
					yield;
				}
			}
			case(180)
			{
				Object[num]=0;
				num-=1;
				Object[num]=1;
				loop(ObjectMove[0])
				{
					NumX-=1/ObjectMove[0];
					yield;
				}
			}
			case(270)
			{
				Object[num]=0;
				num-=13;
				Object[num]=1;
				loop(ObjectMove[0])
				{
					NumY-=1/ObjectMove[0];
					yield;
				}
		
			}
			loop(3)
			{
				ObjectMove=erase(ObjectMove, 0);
			}
		}
	}

	if( ( ExplodeCount<=0 || ExplodeCount>540 ) &&  MoveState==0)
	{
		Object[num]=0;
		if(num+1==MagicStonePositionNum)
		{
			if(MagicStoneGraundJudg(+2))
			{
			if(Object[num+2]==0)
			{
			if(num+2!=PlayerPositionNum)
			{
				MagicStoneMoveRight(15);
			}
			}
			}		
		}
		else if(Object[num+1]==1)
		{
		if(Object[num+2]==0)
		{
		if(MagicBallGraundJudg(+2))
		{
		if(num+2!=MagicStonePositionNum)
		{
		if(num+2!=PlayerPositionNum)
		{
		ExplodeObjectMoveRight=ExplodeObjectMoveRight~[15,num+1];
		}
		}
		}
		}
		}

		if(num-1==MagicStonePositionNum)
		{
			if(MagicStoneGraundJudg(-2))
			{
			if(Object[num-2]==0)
			{
			if(num-2!=PlayerPositionNum)
			{
				MagicStoneMoveLeft(15);
			}
			}
			}		
		}
		else if(Object[num-1]==1)
		{
		if(Object[num-2]==0)
		{
		if(MagicBallGraundJudg(-2))
		{
		if(num-2!=MagicStonePositionNum)
		{
			if(num-2!=PlayerPositionNum)
			{
		ExplodeObjectMoveLeft=ExplodeObjectMoveLeft~[15,num-1];
			}
		}
		}
		}
		}

		if(num+13==MagicStonePositionNum)
		{
			if(MagicStoneGraundJudg(+26))
			{
			if(Object[num+26]==0)
			{
			if(num+26!=PlayerPositionNum)
			{
				MagicStoneMoveDown(15);
			}
			}
			}		
		}
		else if(Object[num+13]==1)
		{
		if(Object[num+26]==0)
		{
		if(MagicBallGraundJudg(+26))
		{
		if(num+26!=MagicStonePositionNum)
		{
			if(num+26!=PlayerPositionNum)
			{
		ExplodeObjectMoveDown=ExplodeObjectMoveDown~[15,num+13];
			}
		}
		}
		}
		}

		if(num-13==MagicStonePositionNum)
		{
			if(MagicStoneGraundJudg(-26))
			{
			if(Object[num-26]==0)
			{
			if(num-26!=PlayerPositionNum)
			{
				MagicStoneMoveUp(15);
			}
			}
			}		
		}
		else if(Object[num-13]==1)
		{
		if(Object[num-26]==0)
		{
		if(MagicBallGraundJudg(-26))
		{
		if(num-26!=MagicStonePositionNum)
		{
			if(num-26!=PlayerPositionNum)
			{
		ExplodeObjectMoveUp=ExplodeObjectMoveUp~[15,num-13];
			}
		}
		}
		}
		}


		Obj_Delete(obj);
	}

yield;
}
}

task Explode
{
while(!Obj_BeDeleted(obj))
{
	if(length(ReinforceMagicBall)>0)
	{
		if(num==ReinforceMagicBall[0])
		{
			if(Graund[num]==3)
			{
			if(ExplodeCount<180)
			{
				ExplodeCount=180;
			}
			else if(ExplodeCount<360)
			{
				ExplodeCount=360;
			}
			else
			{
				ExplodeCount=540;
			}
			}
			else
			{
			if(ExplodeCount<180)
			{
				ExplodeCount=360;
			}
			else if(ExplodeCount<360)
			{
				ExplodeCount=540;
			}
			else
			{
				ExplodeCount=720;
			}
			}
			loop(1)
			{
				ReinforceMagicBall=erase(ReinforceMagicBall, 0);
			}
		}
	}
yield;
}
}


task Explodemove
{
while(!Obj_BeDeleted(obj))
{
	if(length(ExplodeObjectMoveRight)>0)
	{
		if(num==ExplodeObjectMoveRight[1])
		{
				MoveState=1;
				Object[num]=0;
				num+=1;
				Object[num]=1;
				loop(ExplodeObjectMoveRight[0])
				{
					NumX+=1/ExplodeObjectMoveRight[0];
					yield;
				}
			loop(2)
			{
				ExplodeObjectMoveRight=erase(ExplodeObjectMoveRight, 0);
			}
			MoveState=0;
		}
	}

	if(length(ExplodeObjectMoveLeft)>0)
	{
		if(num==ExplodeObjectMoveLeft[1])
		{
				MoveState=1;
				Object[num]=0;
				num-=1;
				Object[num]=1;
				loop(ExplodeObjectMoveLeft[0])
				{
					NumX-=1/ExplodeObjectMoveLeft[0];
					yield;
				}
			loop(2)
			{
				ExplodeObjectMoveLeft=erase(ExplodeObjectMoveLeft, 0);
			}
			MoveState=0;
		}
	}

	if(length(ExplodeObjectMoveDown)>0)
	{
		if(num==ExplodeObjectMoveDown[1])
		{
				MoveState=1;
				Object[num]=0;
				num+=13;
				Object[num]=1;
				loop(ExplodeObjectMoveDown[0])
				{
					NumY+=1/ExplodeObjectMoveDown[0];
					yield;
				}
			loop(2)
			{
				ExplodeObjectMoveDown=erase(ExplodeObjectMoveDown, 0);
			}
			MoveState=0;
		}
	}

	if(length(ExplodeObjectMoveUp)>0)
	{
		if(num==ExplodeObjectMoveUp[1])
		{
				MoveState=1;
				Object[num]=0;
				num-=13;
				Object[num]=1;
				loop(ExplodeObjectMoveUp[0])
				{
					NumY-=1/ExplodeObjectMoveUp[0];
					yield;
				}
			loop(2)
			{
				ExplodeObjectMoveUp=erase(ExplodeObjectMoveUp, 0);
			}
			MoveState=0;
		}
	}

yield;
}
}

}

task StageObject
{
ascent(i in 0..13*14)
{
	if(Object[i]==2)
	{
		Block(i);
	}
	if(Object[i]==3)
	{
		Anti(i);
	}
}
}
////////////////////////////////////////////
task Block(num)
{
		Object[num]=2;
		let SX=GetCenterX-180;
		let SY=GetCenterY-195;
		let scx=1;
		let scy=1;
		let NumX=num%13;
		let NumY=floor(num/13);
		let ExplodeCount=180;
		if(Graund[num]==3)
		{
			ExplodeCount=1;
		}
			else
		{
			ExplodeCount=179;
		}
		let MoveState=0;
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj, imgBlock);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -12,-12);
		ObjEffect_SetVertexXY(obj, 1,12,  -12);
		ObjEffect_SetVertexXY(obj, 2,12, 12);
		ObjEffect_SetVertexXY(obj, 3,  -12,  12);

		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1,  30, 0);
		ObjEffect_SetVertexUV(obj, 2,30, 30);
		ObjEffect_SetVertexUV(obj, 3, 0, 30);
/*
		ObjEffect_SetVertexColor(obj,0,255,100,100,255);
		ObjEffect_SetVertexColor(obj,1,255,100,100,255);
		ObjEffect_SetVertexColor(obj,2,255,100,100,255);
		ObjEffect_SetVertexColor(obj,3,255,100,100,255);
*/
		ObjEffect_SetLayer(obj,2);
		Obj_SetPosition(obj,96,163);
		let angle=0;
	//	ObjEffect_SetScale(obj, scx*0.8,scy*0.8);
		move;
		while(!Obj_BeDeleted(obj))
		{
			Obj_SetPosition(obj,SX+NumX*30,SY+NumY*30);
			yield;
		}

task move
{
while(!Obj_BeDeleted(obj))
{
	Object[num]=2;
	if(length(ObjectMove)>0)
	{
		if(num==ObjectMove[1])
		{
			alternative(ObjectMove[2])
			case(0)
			{
				Object[num]=0;
				num+=1;
				Object[num]=2;
				loop(ObjectMove[0])
				{
					NumX+=1/ObjectMove[0];
					yield;
				}
			}
			case(90)
			{
				Object[num]=0;
				num+=13;
				Object[num]=2;
				loop(ObjectMove[0])
				{
					NumY+=1/ObjectMove[0];
					yield;
				}
			}
			case(180)
			{
				Object[num]=0;
				num-=1;
				Object[num]=2;
				loop(ObjectMove[0])
				{
					NumX-=1/ObjectMove[0];
					yield;
				}
			}
			case(270)
			{
				Object[num]=0;
				num-=13;
				Object[num]=2;
				loop(ObjectMove[0])
				{
					NumY-=1/ObjectMove[0];
					yield;
				}
		
			}
			loop(3)
			{
				ObjectMove=erase(ObjectMove, 0);
			}
		}
	}

yield;
}
}


}

task Anti(num)
{
		Object[num]=3;
		let SX=GetCenterX-180;
		let SY=GetCenterY-195;
		let scx=1;
		let scy=1;
		let NumX=num%13;
		let NumY=floor(num/13);
		let ExplodeCount=180;
		if(Graund[num]==3)
		{
			ExplodeCount=1;
		}
			else
		{
			ExplodeCount=179;
		}
		let MoveState=0;
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj, imgShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -12,-12);
		ObjEffect_SetVertexXY(obj, 1,12,  -12);
		ObjEffect_SetVertexXY(obj, 2,12, 12);
		ObjEffect_SetVertexXY(obj, 3,  -12,  12);

		ObjEffect_SetVertexUV(obj, 0,  384,  206);
		ObjEffect_SetVertexUV(obj, 1,  416, 206);
		ObjEffect_SetVertexUV(obj, 2,416, 238);
		ObjEffect_SetVertexUV(obj, 3, 384, 238);
/*
		ObjEffect_SetVertexColor(obj,0,255,100,100,255);
		ObjEffect_SetVertexColor(obj,1,255,100,100,255);
		ObjEffect_SetVertexColor(obj,2,255,100,100,255);
		ObjEffect_SetVertexColor(obj,3,255,100,100,255);
*/
		ObjEffect_SetLayer(obj,2);
		Obj_SetPosition(obj,96,163);
		let angle=0;
	//	ObjEffect_SetScale(obj, scx*0.8,scy*0.8);
		while(!Obj_BeDeleted(obj))
		{
			Obj_SetPosition(obj,SX+NumX*30,SY+NumY*30);
			yield;
		}
}
